#!/usr/bin/env python3
"""
内容审核服务启动脚本
"""
import os
import sys
import signal
import uvicorn
from config.settings import settings
from utils.logger import audit_logger


def signal_handler(signum, frame):
    """信号处理器"""
    audit_logger.info(f"接收到信号 {signum}，正在关闭服务...")
    sys.exit(0)


def main():
    """主函数"""
    # 注册信号处理器
    signal.signal(signal.SIGINT, signal_handler)
    signal.signal(signal.SIGTERM, signal_handler)
    
    # 检查环境变量文件
    env_file = ".env"
    if not os.path.exists(env_file):
        print(f"警告: 环境变量文件 {env_file} 不存在")
        print("请复制 .env.example 到 .env 并配置相应参数")
    
    # 创建必要的目录
    os.makedirs("logs", exist_ok=True)
    os.makedirs("data", exist_ok=True)
    os.makedirs("models", exist_ok=True)
    
    audit_logger.info("启动内容审核算法服务...")
    audit_logger.info(f"配置信息:")
    audit_logger.info(f"  - API地址: {settings.api_host}:{settings.api_port}")
    audit_logger.info(f"  - Redis地址: {settings.redis_host}:{settings.redis_port}")
    audit_logger.info(f"  - 数据库地址: {settings.db_host}:{settings.db_port}")
    audit_logger.info(f"  - 审核队列: {settings.audit_queue_name}")
    audit_logger.info(f"  - 结果队列: {settings.result_queue_name}")
    
    # 启动服务
    try:
        uvicorn.run(
            "main:app",
            host=settings.api_host,
            port=settings.api_port,
            workers=1,  # 单进程模式，避免多进程问题
            reload=False,  # 生产环境关闭热重载
            log_level=settings.log_level.lower(),
            access_log=True
        )
    except Exception as e:
        audit_logger.error(f"服务启动失败: {e}")
        sys.exit(1)


if __name__ == "__main__":
    main()
